{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from tqdm import tqdm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "# world height\n",
    "WORLD_HEIGHT = 7\n",
    "\n",
    "# world width\n",
    "WORLD_WIDTH = 10\n",
    "\n",
    "# wind strength for each column\n",
    "WIND = [0, 0, 0, 1, 1, 1, 2, 2, 1, 0]\n",
    "\n",
    "# possible actions\n",
    "ACTION_UP = 0\n",
    "ACTION_DOWN = 1\n",
    "ACTION_LEFT = 2\n",
    "ACTION_RIGHT = 3\n",
    "ACTIONS = [ACTION_UP, ACTION_DOWN, ACTION_LEFT, ACTION_RIGHT]\n",
    "\n",
    "# probability for exploration\n",
    "EPSILON = 0.1\n",
    "\n",
    "# Sarsa step size\n",
    "ALPHA = 0.5\n",
    "\n",
    "# reward for each step\n",
    "REWARD = -1.0\n",
    "\n",
    "\n",
    "START = [3, 0]\n",
    "GOAL = [3, 7]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "def step(state, action):\n",
    "    i, j = state\n",
    "    if action == ACTION_UP:\n",
    "        return [max(i - 1 - WIND[j], 0), j]\n",
    "    elif action == ACTION_DOWN:\n",
    "        return [max(min(i + 1 - WIND[j], WORLD_HEIGHT - 1), 0), j]\n",
    "    elif action == ACTION_LEFT:\n",
    "        return [max(i - WIND[j], 0), max(j - 1, 0)]\n",
    "    elif action == ACTION_RIGHT:\n",
    "        return [max(i - WIND[j], 0), min(j + 1, WORLD_WIDTH - 1)]\n",
    "    else:\n",
    "        assert False\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def play(q_value):\n",
    "    time = 0\n",
    "    state = START\n",
    "\n",
    "    if np.random.binomial(1, EPSILON) == 1:\n",
    "        action = np.random.choice(ACTIONS)\n",
    "    else:\n",
    "        values_ = q_value[state[0], state[1], :]\n",
    "        action = np.random.choice([action_ for action_, value_ in enumerate(values_) if value_ == np.max(values_)])\n",
    "    \n",
    "    while state != GOAL:\n",
    "        next_state = step(state, action)\n",
    "        if np.random.binomial(1, EPSILON) == 1:\n",
    "            next_action = np.random.choice(ACTIONS)\n",
    "        else:\n",
    "            values_ = q_value[next_state[0], next_state[1], :]\n",
    "            next_action = np.random.choice([action_ for action_, value_ in enumerate(values_) if value_ == np.max(values_)])\n",
    "\n",
    "        # Sarsa update\n",
    "        q_value[state[0], state[1], action] += \\\n",
    "            ALPHA * (REWARD + q_value[next_state[0], next_state[1], next_action] - \n",
    "                     q_value[state[0], state[1], action])\n",
    "        \n",
    "        state = next_state\n",
    "        action = next_action\n",
    "        time += 1\n",
    "    return time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "def figure_6_3():\n",
    "    q_value = np.zeros((WORLD_HEIGHT, WORLD_WIDTH, 4))\n",
    "    episode_limit = 5000\n",
    "\n",
    "    steps = []\n",
    "    ep = 0\n",
    "    while ep < episode_limit:\n",
    "        steps.append(play(q_value))\n",
    "        ep += 1\n",
    "    steps = np.add.accumulate(steps)\n",
    "\n",
    "    plt.plot(steps, np.arange(1, len(steps) + 1))\n",
    "    plt.xlabel('Time steps')\n",
    "    plt.ylabel('Episodes')\n",
    "    # plt.show()\n",
    "    # plt.savefig('../images/figure_6_3.png')\n",
    "    # plt.close()\n",
    "\n",
    "    # display the optimal policy\n",
    "    optimal_policy = []\n",
    "    for i in range(0, WORLD_HEIGHT):\n",
    "        optimal_policy.append([])\n",
    "        for j in range(0, WORLD_WIDTH):\n",
    "            if [i, j] == GOAL:\n",
    "                optimal_policy[-1].append('G')\n",
    "                continue\n",
    "            bestAction = np.argmax(q_value[i, j, :])\n",
    "            if bestAction == ACTION_UP:\n",
    "                optimal_policy[-1].append('U')\n",
    "            elif bestAction == ACTION_DOWN:\n",
    "                optimal_policy[-1].append('D')\n",
    "            elif bestAction == ACTION_LEFT:\n",
    "                optimal_policy[-1].append('L')\n",
    "            elif bestAction == ACTION_RIGHT:\n",
    "                optimal_policy[-1].append('R')\n",
    "    print('Optimal policy is:')\n",
    "    for row in optimal_policy:\n",
    "        print(row)\n",
    "    \n",
    "    optimal_policy = []\n",
    "    for i in range(0, WORLD_HEIGHT):\n",
    "        optimal_policy.append([])\n",
    "        for j in range(0, WORLD_WIDTH):\n",
    "            if [i, j] == GOAL:\n",
    "                optimal_policy[-1].append('G')\n",
    "                continue\n",
    "            if [i, j] == START:\n",
    "                optimal_policy[-1].append('S')\n",
    "                continue\n",
    "            optimal_policy[-1].append('.')\n",
    "                \n",
    "    state = START\n",
    "    STEP_NUM = 0\n",
    "    while state != GOAL:\n",
    "        i, j = state\n",
    "        bestAction = np.argmax(q_value[i, j, :])\n",
    "        next_state = step(state, bestAction)\n",
    "        if bestAction == ACTION_UP:\n",
    "            optimal_policy[i][j] = 'U'\n",
    "        elif bestAction == ACTION_DOWN:\n",
    "            optimal_policy[i][j] = 'D'\n",
    "        elif bestAction == ACTION_LEFT:\n",
    "            optimal_policy[i][j] = 'L'\n",
    "        elif bestAction == ACTION_RIGHT:\n",
    "            optimal_policy[i][j] = 'R'\n",
    "        state = next_state\n",
    "        STEP_NUM += 1\n",
    "    print('Path is:', STEP_NUM)\n",
    "    for row in optimal_policy:\n",
    "        print(row)\n",
    "    \n",
    "\n",
    "    print('Wind strength for each column:\\n{}'.format([str(w) for w in WIND]))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimal policy is:\n",
      "['D', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'D']\n",
      "['L', 'R', 'R', 'R', 'U', 'U', 'R', 'U', 'R', 'D']\n",
      "['R', 'R', 'R', 'U', 'R', 'R', 'U', 'R', 'R', 'D']\n",
      "['R', 'R', 'R', 'R', 'R', 'R', 'R', 'G', 'R', 'D']\n",
      "['D', 'D', 'R', 'R', 'R', 'R', 'U', 'D', 'L', 'L']\n",
      "['R', 'D', 'D', 'R', 'R', 'U', 'U', 'D', 'L', 'L']\n",
      "['R', 'R', 'R', 'R', 'U', 'U', 'U', 'U', 'L', 'D']\n",
      "Path is: 16\n",
      "['.', '.', '.', '.', '.', 'R', 'R', 'R', 'R', 'D']\n",
      "['.', '.', '.', '.', '.', 'U', '.', '.', '.', 'D']\n",
      "['.', '.', '.', '.', 'R', '.', '.', '.', '.', 'D']\n",
      "['R', 'R', 'R', 'R', '.', '.', '.', 'G', '.', 'D']\n",
      "['.', '.', '.', '.', '.', '.', '.', '.', 'L', 'L']\n",
      "['.', '.', '.', '.', '.', '.', '.', '.', '.', '.']\n",
      "['.', '.', '.', '.', '.', '.', '.', '.', '.', '.']\n",
      "Wind strength for each column:\n",
      "['0', '0', '0', '1', '1', '1', '2', '2', '1', '0']\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAGwCAYAAABIC3rIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTNklEQVR4nO3deVgW9f7/8efNvgmoCIjilimuKJiKmtXJpLLtqJVmZqaVhuZSarbX6aTHOqfMNFu+J80008wWKc3cyqRUEBUX3MUNcGOT/b7n94c/7xNphggMcL8e13VfF/fM5577PYMyr2vm8/mMxTAMAxEREREH5mR2ASIiIiJmUyASERERh6dAJCIiIg5PgUhEREQcngKRiIiIODwFIhEREXF4CkQiIiLi8FzMLqA6sNlsHD9+nFq1amGxWMwuR0RERErBMAyys7MJCQnByeny14AUiErh+PHjhIaGml2GiIiIlMGRI0do2LDhZdsoEJVCrVq1gPMH1NfX1+RqREREpDSysrIIDQ21n8cvR4GoFC7cJvP19VUgEhERqWZK091FnapFRETE4SkQiYiIiMNTIBIRERGHp0AkIiIiDk+BSERERByeApGIiIg4PAUiERERcXgKRCIiIuLwFIhERETE4SkQiYiIiMMzNRC9/PLLWCyWEq+wsDD7+vz8fGJiYqhbty4+Pj7069ePtLS0EttISUmhT58+eHl5ERgYyIQJEyguLi7RZu3atURERODu7k7z5s2ZM2dOZeyeiIiIVBOmXyFq06YNJ06csL/Wr19vXzdu3Di+/fZbFi9ezLp16zh+/Dh9+/a1r7darfTp04fCwkI2bNjA3LlzmTNnDi+++KK9zcGDB+nTpw833XQTiYmJjB07luHDh7NixYpK3U8RERGpuiyGYRhmffnLL7/MV199RWJi4kXrMjMzqVevHgsWLKB///4A7N69m1atWhEXF0fXrl35/vvvueOOOzh+/DhBQUEAzJ49m0mTJnHy5Enc3NyYNGkSsbGxJCUl2bc9YMAAMjIyWL58eanqzMrKws/Pj8zMTD3cVUREpJztScvG3cWJxnW9y3W7V3L+Nv0K0d69ewkJCaFZs2YMGjSIlJQUAOLj4ykqKqJXr172tmFhYTRq1Ii4uDgA4uLiaNeunT0MAURHR5OVlcWOHTvsbX6/jQttLmzjUgoKCsjKyirxEhERkfJlGAZLtxzl7nd/YcSnCeQXWU2rxdRA1KVLF+bMmcPy5ct57733OHjwINdffz3Z2dmkpqbi5uaGv79/ic8EBQWRmpoKQGpqaokwdGH9hXWXa5OVlUVeXt4l65oyZQp+fn72V2hoaHnsroiIiPx/mblFjPpsC+M+30pekZU63q6mBiIX074ZuO222+w/t2/fni5dutC4cWMWLVqEp6enaXVNnjyZ8ePH299nZWUpFImIiJSTDftP8dSirZzIzMfFycKovzVn9N+uxdnJYlpNpgaiP/L396dFixbs27ePW265hcLCQjIyMkpcJUpLSyM4OBiA4OBgNm7cWGIbF0ah/b7NH0empaWl4evr+6ehy93dHXd39/LaLREREQGKrDbe/CGZD346gGFA0wBv3r6/A+Gh/maXZn4fot/Lyclh//791K9fn8jISFxdXVm1apV9fXJyMikpKURFRQEQFRXF9u3bSU9Pt7dZuXIlvr6+tG7d2t7m99u40ObCNkRERKTincjMY8AHv/L+uvNhaGDnUJaN7lElwhCYfIXo6aef5s4776Rx48YcP36cl156CWdnZwYOHIifnx/Dhg1j/Pjx1KlTB19fX0aPHk1UVBRdu3YFoHfv3rRu3ZrBgwczbdo0UlNTef7554mJibFf4RkxYgTvvvsuEydO5JFHHmH16tUsWrSI2NhYM3ddRETEYfy4M42JS7Zx5lwhtTxceKN/OLe2DTa7rBJMDURHjx5l4MCBnD59mnr16tGjRw9+/fVX6tWrB8Bbb72Fk5MT/fr1o6CggOjoaGbNmmX/vLOzM8uWLWPkyJFERUXh7e3NkCFDePXVV+1tmjZtSmxsLOPGjWP69Ok0bNiQjz76iOjo6ErfXxEREUdSUGxl6ve7+fiXQwC0CfFl1qCIch9eXx5MnYeoutA8RCIiIldm5/Esnl68lZ0nzk9dM6xHUybe2hJ3F+dKq+FKzt9VqlO1iIiIVG/5RVbeX3eAGav3UmwzqO3lypv3hnNzq6C//rCJFIhERETkqh3LyGP22v18n3SCUzmFAES3CeK1e9pRr1bVH7mtQCQiIiJXJf7wGR6fF28PQg38PZl4a0vuCg/BYjFvbqEroUAkIiIiZWIYBv/95RBTvttFsc2gdX1fJkS3pHvzANxcqtTMPn9JgUhERESuWF6hlWe+3MbXiccBuKN9fab2a4+Pe/WMFtWzahERETHN4dPnGPlpAjtPZOHsZOH5Pq14uFuTanN77FIUiERERKTUlielMmHxVrILiqnr7ca7D0QQdU1ds8u6agpEIiIi8peKrDb+9f1uPlp/EIBOjWvz7gMRBPt5mFxZ+VAgEhERkctKzcxn1IIENh8+C8Cj1zdl4q1huDpXr47Tl6NAJCIiIn9q/d5TjFm4hdPnCqnl7sIb97bn1rb1zS6r3CkQiYiIyEWsNoOZa/bx1o97MAxoXf/8c8iaBFS955CVBwUiERERKeHMuUJGf5bAL/tOAzDgulBevqsNHq6V9xyyyqZAJCIiInY7jmfy2CfxHMvIw8vNmVfvbkv/yIZml1XhFIhEREQEgK8TjzFpyTbyi2w0ruvFB4M70TK4ltllVQoFIhEREQdXUGxlyne7mbPhEAA3tKjHOwM64uflam5hlUiBSERExIGlZeXz+Lx4Eo9kADDqpuaMu6UFzk7Vd9bpslAgEhERcVBbUs7y+Lx40rML8PN05T/3hXNzqyCzyzKFApGIiIgDWrT5CM8vTaLQaqNFkA8fPtSJxnVr5pD60lAgEhERcSBFVhv/jN1l7y90S+sg3rq/Q7V9Sn15cey9FxERcSBnzhUSMz+BuAPn5xcac/O1jLn5WpwcrL/QpSgQiYiIOICdx7N4bN5mjp49P7/Qf+7rwK1tg80uq8pQIBIREanhlm45yrNfJpFXZKVRHS8+fMhx5hcqLQUiERGRGqqg2Mo/lu3k019TALj+2gBmDOyIv5ebyZVVPQpEIiIiNdChU+cY/dkWth/LxGKBJ/92LU/efK3DzS9UWgpEIiIiNcyS+KO88HUSuYVW/L1ceeu+DtwUFmh2WVWaApGIiEgNUVBs5cWvdvD55iMAdGlah7cHdKC+n6fJlVV9CkQiIiI1wKmcAkZ+Gs+mQ2dxssDYXi2Iuam5bpGVkgKRiIhINbc7NYthczZzLCOPWh4uvPtABDe0qGd2WdWKApGIiEg1ZbMZLI4/wivf7iS30EqTul58NOQ6mgf6mF1ataNAJCIiUg1l5Rcx/vOt/LgrDYBu19Rl1qAIDakvIwUiERGRamZfeg6PfbKZA6fO4ebixNO9WzCsRzP1F7oKCkQiIiLVyJrd6Tz52RayC4oJ8fPgvQcjCQ/1N7usak+BSEREpBowDIMPfjrA1OW7MQzo3KQOsx6MIMDH3ezSagQFIhERkSour9DKpCXb+GbrcQAGdg7llbva4ubiZHJlNYcCkYiISBV29Gwuj8+LZ8fxLFycLLx0Z2se7NoYi0X9hcqTApGIiEgVtenQGR6fF8+Zc4XU8XZj1qAIujara3ZZNZICkYiISBW0dMtRJn2xnUKrjTYhvnzwUCca+OsRHBVFgUhERKQKsdoM3liRzOx1+wG4tU0wb93fAU83Z5Mrq9kUiERERKqIjNxCxixMZN2ekwCMvPEaJvRuiZPmF6pwCkQiIiJVQNKxTEZ8Gs/Rs3m4uzgxrX977u7QwOyyHIYCkYiIiMkWbz7Cc18lUVhso1EdL957MII2IX5ml+VQFIhERERMUlhs47XYnXwSdxiAv4UF8tZ9HfDzcjW5MsejQCQiImKCtKx8npifQPzhswCMuflaxtx8rfoLmUSBSEREpJKtSU5nwuKtnMoppJaHC2/d14FerYPMLsuhKRCJiIhUEpvN4N01+3jrxz0YBoQF12L2g5E0CfA2uzSHp0AkIiJSCbLzixi/aCsrd6YBMKhLI164ozUerppfqCpQIBIREalg+9JzeGzeZg6cPIebsxP/uKcN91/XyOyy5HcUiERERCrQih2pPLVoKzkFxQT7ejB7cCQdQv3NLkv+QIFIRESkAthsBm//uId3Vu8DoHPTOsx8IIJ6tdxNrkwuRYFIRESknGXmFTF24RbWJJ9/BMfQ7k149vZWuDo7mVyZ/BkFIhERkXKUnJrN4/M2c+h0Lu4uTkzt146/d2xodlnyFxSIREREyknsthNM+GIruYVWGvh78v7gSNo20CM4qgMFIhERkatktRlMW7Gb99cdAKB787rMGBhBHW83kyuT0lIgEhERuQpnzxXy5MIt/Lz3FACP92zGhOiWuKi/ULWiQCQiIlJGO45n8vi8eI6ezcPT1Zlp/dtzZ3iI2WVJGSgQiYiIlMHXiceYtGQb+UU2GtXx4oOHIgkL9jW7LCkjBSIREZErUGS18fp3u/j4l0MA3NiyHtPv74ifl6u5hclVqTI3OKdOnYrFYmHs2LH2Zfn5+cTExFC3bl18fHzo168faWlpJT6XkpJCnz598PLyIjAwkAkTJlBcXFyizdq1a4mIiMDd3Z3mzZszZ86cStgjERGpaXIKihk2d7M9DI288Rr+b8h1CkM1QJUIRJs2beL999+nffv2JZaPGzeOb7/9lsWLF7Nu3TqOHz9O37597eutVit9+vShsLCQDRs2MHfuXObMmcOLL75ob3Pw4EH69OnDTTfdRGJiImPHjmX48OGsWLGi0vZPRESqvxOZedw7O46f9pzE09WZDwZHMunWMJydLGaXJuXAYhiGYWYBOTk5REREMGvWLF577TU6dOjA22+/TWZmJvXq1WPBggX0798fgN27d9OqVSvi4uLo2rUr33//PXfccQfHjx8nKCgIgNmzZzNp0iROnjyJm5sbkyZNIjY2lqSkJPt3DhgwgIyMDJYvX37JmgoKCigoKLC/z8rKIjQ0lMzMTHx9dX9YRMTRJB3LZNjcTaRlFRDg487/DelEuJ5HVuVlZWXh5+dXqvO36VeIYmJi6NOnD7169SqxPD4+nqKiohLLw8LCaNSoEXFxcQDExcXRrl07exgCiI6OJisrix07dtjb/HHb0dHR9m1cypQpU/Dz87O/QkNDr3o/RUSkelq35yT3vR9HWlYB1wb6sPSJbgpDNZCpgWjhwoUkJCQwZcqUi9alpqbi5uaGv79/ieVBQUGkpqba2/w+DF1Yf2Hd5dpkZWWRl5d3ybomT55MZmam/XXkyJEy7Z+IiFRvX8QfZdicTeQWWunevC5fjOxGaB0vs8uSCmDaKLMjR44wZswYVq5ciYeHh1llXJK7uzvu7noasYiIo7LZDN5etZd3Vu0F4O4OIbzRPxw3F9NvrEgFMe03Gx8fT3p6OhEREbi4uODi4sK6det45513cHFxISgoiMLCQjIyMkp8Li0tjeDgYACCg4MvGnV24f1ftfH19cXT07OC9k5ERKqr9Ox87n0/zh6GnrjxGt66r4PCUA1n2m/35ptvZvv27SQmJtpfnTp1YtCgQfafXV1dWbVqlf0zycnJpKSkEBUVBUBUVBTbt28nPT3d3mblypX4+vrSunVre5vfb+NCmwvbEBERuWBfejZ/n7mB+MNn8XY7P/P0xFvDcNJIshrPtFtmtWrVom3btiWWeXt7U7duXfvyYcOGMX78eOrUqYOvry+jR48mKiqKrl27AtC7d29at27N4MGDmTZtGqmpqTz//PPExMTYb3mNGDGCd999l4kTJ/LII4+wevVqFi1aRGxsbOXusIiIVGk/7TlJzIIEsvOLaVLXizlDO9MkwNvssqSSVOmZqt966y2cnJzo168fBQUFREdHM2vWLPt6Z2dnli1bxsiRI4mKisLb25shQ4bw6quv2ts0bdqU2NhYxo0bx/Tp02nYsCEfffQR0dHRZuySiIhUMYZh8OHPB5j6/W5sBnRqXJsPHuqkJ9U7GNPnIaoOrmQeAxERqT7yCq1MWrKNb7YeB+C+Tg159e62eLg6m1yZlIcrOX9X6StEIiIiFeXo2Vwe+ySenSeycHGy8OKdrRnctTEWi/oLOSIFIhERcTgb9p9i1IItnDlXSF1vN2YOiqBrs7pmlyUmUiASERGHYRgG8349zCvf7sRqM2jbwJf3B3eigb+mYXF0CkQiIuIQ8ousvPh1Eos2HwXOT7b4r37t1V9IAAUiERFxAKmZ+Tz+aTxbj2TgZIFJt4bxWM9m6i8kdgpEIiJSo20+dIYRnyZwKqcAP09X3n2gI9dfW8/ssqSKUSASEZEa67ONKbz4dRJFVoOw4Fp8MLgTjerq4axyMQUiERGpcYqsNv6xbCefxB0GoE+7+rxxb3u83HTak0vTvwwREalRzpwrJGZ+AnEHTgMwIbolT9x4jfoLyWUpEImISI2RnJrN8E82ceRMHt5uzrx1fwd6twk2uyypBhSIRESkRtiw7xSPz4snu6CYRnW8+PChTrQMrmV2WVJNKBCJiEi193XiMZ5evJUiq0HnJnV4f3AktfVwVrkCCkQiIlJtGYbB7HUH+Nfy3QD0aV+ff98brskW5YopEImISLWUX2Tl2aXb+TLhGADDejTludtb4eSkztNy5RSIRESk2knPzmfEvHgSUjJwdrLw4h2tGdKtidllSTWmQCQiItVKcmo2Qz/eyPHMfHw9XJg1KJIe1waYXZZUcwpEIiJSbcTtP81j8zaTnV9MswBvPhrSiWb1fMwuS2oABSIREakWvk48xoTF2yi02ujUuDYfDemEv5dGkkn5UCASEZEqrdhq47XYXczZcAiA29oG89b9HTSSTMqVApGIiFRZWflFjFqwhZ/2nARg5I3XMKF3S40kk3KnQCQiIlXSoVPnGP7JZval5+Dp6sxb94dza9v6ZpclNZQCkYiIVDlrk9N58rMtZOUXE+zrwUdDOtG2gZ/ZZUkNpkAkIiJVhmEYzFq7nzd/SMYwoGMjf2Y/GEmQr4fZpUkNp0AkIiJVQk5BMU8tSmTFjjQABnYO5eW72uDuos7TUvEUiERExHQHT53j0f/fX8jN2YlX7m7DwM6NzC5LHIgCkYiImCpu/2lGfBpPZl4Rwb4evPdgBB0b1Ta7LHEwCkQiImKazzel8NzSJIptBh1C/fngoUgCa6m/kFQ+BSIREal0VpvBtOW7ef+nAwDcGR7CG/3ba7JFMY0CkYiIVKrM3CKeWpzIj7vSARjb61rG3HwtFosmWxTzKBCJiEil2XY0gyfmJ3D0bB5uLk680b89d3doYHZZIgpEIiJS8QzDYN6vh3lt2S4KrTZC63gy84EI2jf0N7s0EUCBSEREKlhBsZXnlibxRfxRAKLbBDGtfzh+nq4mVybyPwpEIiJSYdKz8xkxL56ElAycLPDs7a0Y1qOp+gtJlaNAJCIiFWLb0Qwe+ySe1Kx8fD1cePeBCHq2qGd2WSKXpEAkIiLl7uvEY0z8YhsFxTaaB/rw4UOdaBrgbXZZIn9KgUhERMrNuYJi3liRzJwNhwC4OSyQtwd0oJaH+gtJ1aZAJCIi5WLH8Uxi5idw6HQuAE/ceA1P9W6Js5P6C0nVp0AkIiJXxTAMFm46wkvf7KCw2EaInwdT+rXnBvUXkmpEgUhERMosr9DK818lsSTh/JD6v4UF8u97w6nt7WZyZSJXRoFIRETK5PDpc4z4NIFdJ7JwdrLwdO+WPN6zGU66RSbVkAKRiIhcsdW70xi7MJGs/GICfNyYMTCCqGvqml2WSJkpEImISKkVFtt4+8c9zFq7H4CIRv7MGhRJsJ+HyZWJXB0FIhERKZWjZ3OJmZ/A1qOZAAyJasxzfVrj5uJkcmUiV0+BSERE/tKqXWmMX7SVzLwi/Dxdmdq3Hbe1q292WSLlRoFIRET+VLHVxps/7GH2uvO3yMJD/Zn5QEca1vYyuTKR8qVAJCIil3Qqp4CY+Qn8dvAMAA93a8Kzt7fSLTKpkRSIRETkIrtTsxg2ZzPHMvLwdnNmWv9w+rTXLTKpuRSIRESkhDXJ6YxesIWcgmKaBnjz4UORNA+sZXZZIhVKgUhERACw2Qymr9rL9FV7AejarA6zH4zE30uzTkvNp0AkIiKczilg7OeJ/Lz3FACDujTipTvbqL+QOAwFIhERB7dh/ymeWrSVE5n5eLg68c972tEvsqHZZYlUKgUiEREH9kncIV7+Zgc2A5oFeDPrwQjCgn3NLkuk0ikQiYg4IKvNYMp3u/ho/UEA+kU05JW72+DjrtOCOCb9yxcRcTCZuUWMXriFn/acBODp3i2Iuak5FoueUi+OS4FIRMSB7EvP4dFPNnPw1Dk8XZ15817NLyQCCkQiIg5jze50nvxsC9kFxTTw9+SDhyJpE+JndlkiVYKp4ynfe+892rdvj6+vL76+vkRFRfH999/b1+fn5xMTE0PdunXx8fGhX79+pKWlldhGSkoKffr0wcvLi8DAQCZMmEBxcXGJNmvXriUiIgJ3d3eaN2/OnDlzKmP3RESqBMMweH/dfh6Zu4nsgmI6N6nD16O6KwyJ/I6pgahhw4ZMnTqV+Ph4Nm/ezN/+9jfuvvtuduzYAcC4ceP49ttvWbx4MevWreP48eP07dvX/nmr1UqfPn0oLCxkw4YNzJ07lzlz5vDiiy/a2xw8eJA+ffpw0003kZiYyNixYxk+fDgrVqyo9P0VEalseYVWxi/aypTvd2MYMLBzKJ8O70KAj7vZpYlUKRbDMAyzi/i9OnXq8MYbb9C/f3/q1avHggUL6N+/PwC7d++mVatWxMXF0bVrV77//nvuuOMOjh8/TlBQEACzZ89m0qRJnDx5Ejc3NyZNmkRsbCxJSUn27xgwYAAZGRksX778kjUUFBRQUFBgf5+VlUVoaCiZmZn4+mo4qohUD1tSzvLU4q0cOHkOZycLL93ZmsFdG6vztDiMrKws/Pz8SnX+rjJTkFqtVhYuXMi5c+eIiooiPj6eoqIievXqZW8TFhZGo0aNiIuLAyAuLo527drZwxBAdHQ0WVlZ9qtMcXFxJbZxoc2FbVzKlClT8PPzs79CQ0PLc1dFRCrcf9cfpO97Gzhw8hxBvu7MG9aZh6KaKAyJ/AnTA9H27dvx8fHB3d2dESNGsHTpUlq3bk1qaipubm74+/uXaB8UFERqaioAqampJcLQhfUX1l2uTVZWFnl5eZesafLkyWRmZtpfR44cKY9dFRGpcPlFVp5dup1Xl+3EMOCu8BCWj+lJt2sCzC5NpEozfZRZy5YtSUxMJDMzky+++IIhQ4awbt06U2tyd3fH3V3310WkeknPzufxefFsSckAYOKtLRl5wzW6KiRSCqYHIjc3N5o3bw5AZGQkmzZtYvr06dx///0UFhaSkZFR4ipRWloawcHBAAQHB7Nx48YS27swCu33bf44Mi0tLQ1fX188PT0rardERCrVjuOZPDp3M8cz8/HzdOWdgR25oUU9s8sSqTZMv2X2RzabjYKCAiIjI3F1dWXVqlX2dcnJyaSkpBAVFQVAVFQU27dvJz093d5m5cqV+Pr60rp1a3ub32/jQpsL2xARqe5W7Ejl3tlxHM/Mp1k9b76K6a4wJHKFTL1CNHnyZG677TYaNWpEdnY2CxYsYO3ataxYsQI/Pz+GDRvG+PHjqVOnDr6+vowePZqoqCi6du0KQO/evWndujWDBw9m2rRppKam8vzzzxMTE2O/5TVixAjeffddJk6cyCOPPMLq1atZtGgRsbGxZu66iMhVK7ba+PfKPby3dj8APZoHMHNQBH6eriZXJlL9mBqI0tPTeeihhzhx4gR+fn60b9+eFStWcMsttwDw1ltv4eTkRL9+/SgoKCA6OppZs2bZP+/s7MyyZcsYOXIkUVFReHt7M2TIEF599VV7m6ZNmxIbG8u4ceOYPn06DRs25KOPPiI6OrrS91dEpLycPVfIqM8S+GXfaQCG9WjKM7eF4epc5S78i1QLVW4eoqroSuYxEBGpaIdOnWPonE0cPHUOLzdn/tWvPXeGh5hdlkiVU+HzEM2dO7fELaeJEyfi7+9Pt27dOHz4cFk2KSIipbDp0Bn6vreBg6fO0cDfky+f6KYwJFIOyhSIXn/9dfsIrbi4OGbOnMm0adMICAhg3Lhx5VqgiIict3BjCg98+CtnzhXSvqEfS2O6ERasq9Yi5aFMfYiOHDliHyr/1Vdf0a9fPx577DG6d+/OjTfeWJ71iYg4vIJiKy98lcSizUcB6NO+Pm/2D8fTzdnkykRqjjJdIfLx8eH06fMd+X744Qd7J2gPD48/nf1ZRESuXFpWPoM+/I1Fm4/iZIEJ0S15d2BHhSGRclamK0S33HILw4cPp2PHjuzZs4fbb78dgB07dtCkSZPyrE9ExGFt2HeKmAUJnM0topaHC7MGRXD9tZpfSKQilOkK0cyZM4mKiuLkyZMsWbKEunXrAhAfH8/AgQPLtUAREUdjGAaz1+1n8H83cja3iDYhvnwV011hSKQCadh9KWjYvYhUlqz8IiZ9sY3vk84/oLpvxwa83rcdHq66RSZypSp82D3Azz//zIMPPki3bt04duwYAPPmzWP9+vVl3aSIiEPbknKW26f/zPdJqbg6W/jn39vy7/vCFYZEKkGZAtGSJUuIjo7G09OThIQECgoKAMjMzOT1118v1wJFRBzBok1HuP/9Xzl6No/QOp4sejyKQV0a60n1IpWkTIHotddeY/bs2Xz44Ye4uv7vmTndu3cnISGh3IoTEanp0rPyGbNwCxOXbKPQaiO6TRCxT15Px0a1zS5NxKGUaZRZcnIyPXv2vGi5n58fGRkZV1uTiIhDiD98hlELtnAiMx+Acb1aMPpvzXFy0lUhkcpWpkAUHBzMvn37Lhpiv379epo1a1YedYmI1GjLth1n3OeJFFkNmtXzZlq/9nRqUsfsskQcVpkC0aOPPsqYMWP473//i8Vi4fjx48TFxfH000/zwgsvlHeNIiI1hs1m8O6afbz14x4MA25tE8yb94Xj416mP8ciUk7K9D/wmWeewWazcfPNN5Obm0vPnj1xd3fn6aefZvTo0eVdo4hIjZCdX8T4RVtZuTMNgCFRjXnxzjY46xaZiOmuah6iwsJC9u3bR05ODq1bt8bHx6c8a6syNA+RiFytfek5PDZvMwdOnsPN2Yl/3NOG+69rZHZZIjXalZy/r+oarZubG61bt76aTYiI1Hg/7Ehl/KKt5BQUE+zrwezBkXQI9Te7LBH5nVIHor59+5Z6o19++WWZihERqUlsNoO3f9zDO6v3AdC5aR1mPhBBvVruJlcmIn9U6kDk5+dn/9kwDJYuXYqfnx+dOnUCzj/HLCMj44qCk4hITZWZV8TYhVtYk3wSgKHdm/Ds7a1wdS7zAwJEpAKVOhB9/PHH9p8nTZrEfffdx+zZs3F2Pj+lvNVq5YknnlAfGxFxeMmp2Tw+bzOHTufi7uLE1H7t+HvHhmaXJSKXUaZO1fXq1WP9+vW0bNmyxPLk5GS6devG6dOny63AqkCdqkWktGK3nWDCF1vJLbTSwN+T9wdH0raB319/UETKXYV3qi4uLmb37t0XBaLdu3djs9nKskkRkWrNajN4Y0Uys9ftB6B787rMGBhBHW83kysTkdIoUyAaOnQow4YNY//+/XTu3BmA3377jalTpzJ06NByLVBEpKo7e66QJxdu4ee9pwB4rGczJka3xEX9hUSqjTIFojfffJPg4GD+/e9/c+LECQDq16/PhAkTeOqpp8q1QBGRqmzH8UwenxfP0bN5eLo686/+7bkrPMTsskTkCl3VxIxw/v4cUKP71qgPkYhcyteJx5i0ZBv5RTYa1fHi/cGRtKqvvxEiVUWlTcx48uRJkpOTAQgLCyMgIOBqNiciUi3kF1n51/LdfPzLIQBuaFGP6QM64O+l/kIi1VWZAtG5c+cYPXo0n3zyib0TtbOzMw899BAzZszAy8urXIsUEakq4vafZvKX2zh0OheAmJuuYfwtLfU8MpFqrkw9/saPH8+6dev49ttvycjIICMjg6+//pp169apD5GI1EhWm8E/Y3cy8MNfOXQ6l2BfD/5vSCcmRIcpDInUAGXqQxQQEMAXX3zBjTfeWGL5mjVruO+++zh58mR51VclqA+RiGPLK7QyZuEWfvj/T6kf1KURk24Lw9fD1eTKRORyKrwPUW5uLkFBQRctDwwMJDc3tyybFBGpkk5mFzB87ia2Hs3EzcWJN+8N1ygykRqoTLfMoqKieOmll8jPz7cvy8vL45VXXiEqKqrcihMRMdO+9Gz+PusXth7NxN/LlfnDuygMidRQZbpCNH36dKKjo2nYsCHh4eEAbN26FQ8PD1asWFGuBYqImOHnvSeJmZ9AVn4xTep68fHQzjQN8Da7LBGpIGWehyg3N5f58+eze/duAFq1asWgQYPw9PQs1wKrAvUhEnEchmEwZ8MhXovdhdVmENm4Nh8+1EmP4BCphiplHiIvLy8effTRsn5cRKTKOVdQzAtfJ/FlwjEA+kU05PW+bXF3cTa5MhGpaGXqQzR37lxiY2Pt7ydOnIi/vz/dunXj8OHD5VaciEhlSTqWyR0z1vNlwjGcLPB8n1a8eW97hSERB1GmQPT666/bb43FxcXx7rvvMm3aNAICAhg3bly5FigiUpEMw+Cjnw/w91m/cPDUOer7efDZo10Zfn0zLBbNLyTiKMp0y+zIkSM0b94cgK+++or+/fvz2GOP0b1794vmJhIRqapO5RQwYfFW1iSfnzutd+sgpvVvr0dwiDigMl0h8vHx4fTp0wD88MMP3HLLLQB4eHiQl5dXftWJiFSQX/ad4rbpP7Mm+SRuLk784562vD84UmFIxEGV6QrRLbfcwvDhw+nYsSN79uzh9ttvB2DHjh00adKkPOsTESlXRVYb/1m5h9nr9mMYcG2gDzMe6EhYsEaQijiyMl0hmjlzJlFRUZw8eZIlS5ZQt25dAOLj4xk4cGC5FigiUl6OnMnlvvfjeG/t+TA0sHMjvhnVQ2FIRMo+D5Ej0TxEItWbzWawdMsxXv52B9n5xdTycGFq3/b0aV/f7NJEpAJVyDxE27Zto23btjg5ObFt27bLtm3fvn1pNysiUqG2Hc3g+a+S2HY0E4CIRv5MH9CR0DpeJlcmIlVJqQNRhw4dSE1NJTAwkA4dOmCxWPj9xaUL7y0WC1artUKKFREpLavN4L21+5i+ai9FVgMfdxeeuOkaHr2+Ga7OZeotICI1WKkD0cGDB6lXr579ZxGRqupUTgFjFyayft8pAG5vF8wrd7WlXi13kysTkaqq1IGocePGl/xZRKQq2XzoDE/MTyA9uwBPV2deu6ctfSMaaJJFEbmsMj/LLDk5mRkzZrBr1y7g/MNdR48eTcuWLcutOBGR0iootvLOqr3MXncAq82geaAPswZF0CKoltmliUg1UKYb6UuWLKFt27bEx8cTHh5OeHg4CQkJtG3bliVLlpR3jSIil7XtaAZ3zfiFmWv2Y7UZ3NMhhK9juisMiUiplWnY/TXXXMOgQYN49dVXSyx/6aWX+PTTT9m/f3+5FVgVaNi9SNX0x6tCdb3deO2ettzWTsPpReTKzt9lCkReXl5s27bN/jyzC/bu3Ut4eDi5ublXuskqTYFIpOrZdjSDpxdvZU9aDgB3hofwyl1tqOOtR2+IyHkVMg/R79144438/PPPFwWi9evXc/3115dlkyIipfLHq0IBPuevCt3aVleFRKTsyhSI7rrrLiZNmkR8fDxdu3YF4Ndff2Xx4sW88sorfPPNNyXaioiUh+1HMxmzcAsHTp0DdFVIRMpPmW6ZOTmVri92TZmkUbfMRMz3ZcJRnvlyO4XFNurVcufVu9qor5CIXFaF3zKz2WxlKkxE5EoZhsGbPyQzc835wRo3hwXyn/s64OflanJlIlKTXNGw+9tvv53MzEz7+6lTp5KRkWF/f/r0aVq3bl1uxYmIYysotvL04m32MBRz0zV8+FAnhSERKXdXFIhWrFhBQUGB/f3rr7/OmTNn7O+Li4tJTk4uv+pExGEdPn2Oe2fHsSThKM5OFqb1a8+E6DCcnDTjtIiUvyu6ZfbH7kZl6H4kIvKXvt16nMlfbienoBh/L1fevr8DN7YMNLssEanByvzoDhGR8lZktfHqtzuZ9+thADo1rs07AzsS4u9pcmUiUtNd0S0zi8Vy0QMSr+aBiVOmTOG6666jVq1aBAYGcs8991x0yy0/P5+YmBjq1q2Lj48P/fr1Iy0trUSblJQU+vTpg5eXF4GBgUyYMIHi4uISbdauXUtERATu7u40b96cOXPmlLluESl/WflFDP14E/N+PYzFAqNuas7Cx7oqDIlIpbjiW2YPP/ww7u7uwPmwMmLECLy9vQFK9C8qjXXr1hETE8N1111HcXExzz77LL1792bnzp32bY4bN47Y2FgWL16Mn58fo0aNom/fvvzyyy8AWK1W+vTpQ3BwMBs2bODEiRM89NBDuLq68vrrrwNw8OBB+vTpw4gRI5g/fz6rVq1i+PDh1K9fn+jo6CuqWUTK34GTOTw+L5696Tl4uTnzzoCO9GodZHZZIuJArmgeoqFDh5aq3ccff1ymYk6ePElgYCDr1q2jZ8+eZGZmUq9ePRYsWED//v0B2L17N61atSIuLo6uXbvy/fffc8cdd3D8+HGCgs7/AZ09ezaTJk3i5MmTuLm5MWnSJGJjY0lKSrJ/14ABA8jIyGD58uV/WZfmIRKpOCt3pjH+80SyC4oJrOXOfx++jrYN/MwuS0RqgAqbh6isQae0Lgzpr1OnDgDx8fEUFRXRq1cve5uwsDAaNWpkD0RxcXG0a9fOHoYAoqOjGTlyJDt27KBjx47ExcWV2MaFNmPHjr1kHQUFBSWudmVlZZXXLorI/2ezGby9ai/vrNoLwHVNajNzUASBtTxMrkxEHNEV9SGqSDabjbFjx9K9e3fatm0LQGpqKm5ubvj7+5doGxQURGpqqr3N78PQhfUX1l2uTVZWFnl5eRfVMmXKFPz8/Oyv0NDQctlHETkvO7+Ix+bF28PQkKjGzB/eVWFIRExTZQJRTEwMSUlJLFy40OxSmDx5MpmZmfbXkSNHzC5JpMY4cDKHv8/awI+70nBzceLf94bzyt1tcXOpMn+ORMQBVYlh96NGjWLZsmX89NNPNGzY0L48ODiYwsJCMjIySlwlSktLIzg42N5m48aNJbZ3YRTa79v8cWRaWloavr6+eHpePILF3d3d3nFcRMrP8qRUJnyxlez8YoJ9PZg9OJIOof5mlyUiYu4VIsMwGDVqFEuXLmX16tU0bdq0xPrIyEhcXV1ZtWqVfVlycjIpKSlERUUBEBUVxfbt20lPT7e3WblyJb6+vvbHiERFRZXYxoU2F7YhIhXLMAzeW7ufEZ/Gk51fTKfGtflmdHeFIRGpMsr0tPvy8sQTT7BgwQK+/vprWrZsaV/u5+dnv3IzcuRIvvvuO+bMmYOvry+jR48GYMOGDcD5YfcdOnQgJCSEadOmkZqayuDBgxk+fHiJYfdt27YlJiaGRx55hNWrV/Pkk08SGxtbqmH3GmUmUnaFxTZe+mYHn21MAeDhbk14rk8rXJ11i0xEKtaVnL9NDUR/Nqnjxx9/zMMPPwycn+voqaee4rPPPqOgoIDo6GhmzZplvx0GcPjwYUaOHMnatWvx9vZmyJAhTJ06FReX/90RXLt2LePGjWPnzp00bNiQF154wf4df0WBSKRsjpzJZdRnW9h6JAOLBV68ozVDuzf96w+KiJSDahOIqgsFIpErt3JnGk8v3kpmXhF+nq68dX84fwvTZIsiUnkqbB4iEZG/kl9k5cWvk1i0+SgA4aH+zHygIw1re5lcmYjIn1MgEpFyk3I6lxGfxrPzRBZOFhh+fTOe7t1SQ+pFpMpTIBKRcrFmdzpjFm4hK7+Yut5uzBjYkW7NA8wuS0SkVBSIROSqWG0G01ftZcbqvRgGdAj1570HI6jvp6fUi0j1oUAkImV2OqeAMQsTWb/vFACDuzbm+Tta4e7ibHJlIiJXRoFIRMpkx/FMHp27meOZ+Xi6OvPPv7elb0TDv/6giEgVpEAkIlds0eYjPL80iUKrjaYB3sx+MJKWwbXMLktEpMwUiESk1AqKrby2bBfzfj0MwM1hgfznvg74ebmaXJmIyNVRIBKRUjlyJpeYBQlsO5oJwJM3X8u4Xtf+6YzzIiLViQKRiPylH3akMuGLbWTmFeHv5cpb93fgppaBZpclIlJuFIhE5E/ZbAZv/JDMe2v3A+dnnZ41KIIG/hpSLyI1iwKRiFxSfpGVpxZtJXb7CQAevb4pE6LDNOu0iNRICkQicpHTOQU8+slmElIycHW2MLVve/pFaki9iNRcCkQiUsK+9BwembOJlDO5+Hq48P7gTkRdU9fsskREKpQCkYjYrdtzkpj5CeQUFBNax5OPH+5M80Afs8sSEalwCkQiAsDnm1J4/qskiqwG1zWpzXsPRhLg4252WSIilUKBSMTBFVlt/DN2F3M2HALgrvAQ3rw3XJ2nRcShKBCJOLD07HxGzd/CxkNnABjXqwVP3txcky2KiMNRIBJxUFtSzjLi03jSsgrwcXfhP/eF07tNsNlliYiYQoFIxAF9u/U4Ty3eSmGxjeaBPrw/OJJr6qnztIg4LgUiEQdSZLXx2rKdzI3738NZpw/siI+7/hSIiGPTX0ERB3Ho1DnGfJ7I1iMZWCzwWM9mTIwOw9lJ/YVERBSIRGo4wzBYvPkoL3+7g9xCK74eLrx5r/oLiYj8ngKRSA2WU1DMpC+22Z9H1qVpHd66vwMhejiriEgJCkQiNVRyajajFiSwNz0HFycLT/VuyWM9m+kWmYjIJSgQidQwhmEwZ8Mhpny/m8JiG0G+7sx+MJKOjWqbXZqISJWlQCRSg6Rn5zNh8TbW7TkJwE0t6zGtfzj1aukRHCIil6NAJFIDGIbBkoRjvP7dLs6cK8TdxYnn+7Tiwa6NNeu0iEgpKBCJVHN5hVYmLtnGt1uPA9C6vi/TB3Tg2qBaJlcmIlJ9KBCJVGPHM/J4bN5mko5l4eJkYdwtLXisZzNcnfVgVhGRK6FAJFJNxR8+y+Pz4jmVU0AdbzdmDYqga7O6ZpclIlItKRCJVDOGYfBJ3GH+GbuLQquNsOBafPhQJ0LreJldmohItaVAJFKN5BdZefbL7Xy55RgA0W2C+M99HfDWs8hERK6K/oqKVBPp2fk8Pi+eLSkZODtZmHxbGI90b4qTJloUEblqCkQi1UDSsUwe/WQzJzLz8fVwYdagSHpcG2B2WSIiNYYCkUgVF7vtBE8tTiS/yEazet7835DraBrgbXZZIiI1igKRSBVlsxlMX7WX6av2AtCzRT1mDOyIn6eryZWJiNQ8CkQiVVBuYTFPL97Kd9tTARjWoymTbwvDRfMLiYhUCAUikSrmeEYej36ymR3Hs3B1tvDPe9px33WhZpclIlKjKRCJVCG/n2yxrrcbswdHcl2TOmaXJSJS4ykQiVQRS+KPMvnL7fbJFj8a0omGtTXZoohIZVAgEjGZ1WYwbflu3v/pAAC9Wwfx1v2abFFEpDLpL66IibLzixizMJHVu9MBGHVTc8bf0kKTLYqIVDIFIhGTHD59juFzN7M3PQd3Fyem9W/P3R0amF2WiIhDUiASMcGG/ad4Yn4CGblFBNZy58OHOhEe6m92WSIiDkuBSKSSzf/tMC99vYNim0F4Qz8+eKgTQb4eZpclIuLQFIhEKkmx1cary3bySdxhAO4KD2Fa//Z4uDqbXJmIiCgQiVSC3MJiRi3YYu88PSG6JU/ceA0WizpPi4hUBQpEIhXs0KlzPDE/gZ0nsnB3cWL6gA7c2ra+2WWJiMjvKBCJVKBVu9IY+3ki2fnF1PF248OHIolsrJmnRUSqGgUikQpQWGxj2vLdfLT+IACRjWsza1CEOk+LiFRRCkQi5ezo2VyemJ/AtqOZADzcrQnP3t4KNxc9qV5EpKpSIBIpR78eOM0T8xM4c64Qfy9X3ugfzi2tg8wuS0RE/oICkUg5MAyDeb8e5tVvd1JsM2gT4ssHD3Wigb+n2aWJiEgpKBCJXKWCYisvfrWDzzcfAc7PL/Svfu3xdNP8QiIi1YUCkchVSM/KZ8Sn8SSkZOBkgWduC+PR65tpfiERkWrG1F6eP/30E3feeSchISFYLBa++uqrEusNw+DFF1+kfv36eHp60qtXL/bu3VuizZkzZxg0aBC+vr74+/szbNgwcnJySrTZtm0b119/PR4eHoSGhjJt2rSK3jVxAIlHMrjz3fUkpGTg6+HCx0M781hPTbYoIlIdmRqIzp07R3h4ODNnzrzk+mnTpvHOO+8we/ZsfvvtN7y9vYmOjiY/P9/eZtCgQezYsYOVK1eybNkyfvrpJx577DH7+qysLHr37k3jxo2Jj4/njTfe4OWXX+aDDz6o8P2TmskwDOb/dpj73o8jLauA5oE+fD2qBze0qGd2aSIiUkYWwzAMs4sAsFgsLF26lHvuuQc4f9IJCQnhqaee4umnnwYgMzOToKAg5syZw4ABA9i1axetW7dm06ZNdOrUCYDly5dz++23c/ToUUJCQnjvvfd47rnnSE1Nxc3NDYBnnnmGr776it27d5eqtqysLPz8/MjMzMTX17f8d16qjbxCK88u3c7SLccAuKV1EP+5L5xaHq4mVyYiIn90JefvKjsxysGDB0lNTaVXr172ZX5+fnTp0oW4uDgA4uLi8Pf3t4chgF69euHk5MRvv/1mb9OzZ097GAKIjo4mOTmZs2fPXvK7CwoKyMrKKvES2Xokgztm/MzSLcdwdrLw7O1hfDA4UmFIRKQGqLKBKDU1FYCgoJJzuAQFBdnXpaamEhgYWGK9i4sLderUKdHmUtv4/Xf80ZQpU/Dz87O/QkNDr36HpNoyDINPfz1M/9kb2H/yHIG13FkwvIv6C4mI1CBVNhCZafLkyWRmZtpfR44cMbskMUl+kZVJS7bx/FdJFFkNbmsbzA/jetKlWV2zSxMRkXJUZYfdBwcHA5CWlkb9+v97MnhaWhodOnSwt0lPTy/xueLiYs6cOWP/fHBwMGlpaSXaXHh/oc0fubu74+7uXi77IdVXWlY+j8+LJ/HI+SH1E28N4/GeGlIvIlITVdkrRE2bNiU4OJhVq1bZl2VlZfHbb78RFRUFQFRUFBkZGcTHx9vbrF69GpvNRpcuXextfvrpJ4qKiuxtVq5cScuWLaldu3Yl7Y1UN6t2pXHnjPUkHsnA38uVTx7pwogbdItMRKSmMjUQ5eTkkJiYSGJiInC+I3ViYiIpKSlYLBbGjh3La6+9xjfffMP27dt56KGHCAkJsY9Ea9WqFbfeeiuPPvooGzdu5JdffmHUqFEMGDCAkJAQAB544AHc3NwYNmwYO3bs4PPPP2f69OmMHz/epL2Wqiy/yMoLXyUxbO5m0rMLaBlUi29ietDj2gCzSxMRkQpk6rD7tWvXctNNN120fMiQIcyZMwfDMHjppZf44IMPyMjIoEePHsyaNYsWLVrY2545c4ZRo0bx7bff4uTkRL9+/XjnnXfw8fGxt9m2bRsxMTFs2rSJgIAARo8ezaRJk0pdp4bdO4bk1Gye/GwLyWnZAAzv0ZSnerfUIzhERKqpKzl/V5l5iKoyBaKa7cKDWV+L3UVhsY0AH3f+c184PTXRoohItXYl5+8q26lapDKcyingmSXb+XHX+Y72N7Wsxxv3hhPgo071IiKORIFIHNbypBM88+V2MnKLcHN24pnbwhjavYk6TouIOCAFInE4hcU2XovdySdxhwFoVd+XN+9tT5sQP5MrExERsygQiUM5eOocj8/bzJ60HCwWGHHDNYzr1QI3lyo7A4WIiFQCBSJxGKt2pTF+0VYy84qo4+3GtH7t6dU66K8/KCIiNZ4CkdR4NpvBO6v38vaPewHoEOrPBw9FEljLw+TKRESkqlAgkhotO7+I8Yu2snLn+VFkQ6Ia81yf1rpFJiIiJSgQSY114GQOj82LZ196Dm7OTrz297bc1ynU7LJERKQKUiCSGunHnWmMW5RIdn4xwb4ezB4cSYdQf7PLEhGRKkqBSGoUm83grR/3MGP1PgA6Na7NrAcj1F9IREQuS4FIaozs/CLGfb7VPuv0w92a8OztrdRfSERE/pICkdQIh06d49FPNrM3PQc3Fyem9m1H34iGZpclIiLVhAKRVHs/7TnJqAUJZOUXE+TrzvuDO6m/kIiIXBEFIqm2DMPg/9Yf5PXvdmEzoGMjf95/MJJAX/UXEhGRK6NAJNVSfpGVZ5du58uEYwDcG9mQ1/7eFncXZ5MrExGR6kiBSKqdE5l5jPg0ga1HMnB2svB8n1Y83E1PqRcRkbJTIJJqZUvKWR79JJ5TOQX4e7ky84EIujcPMLssERGp5hSIpNr4OvEYE77YRmGxjbDgWnwwuBON6nqZXZaIiNQACkRS5dlsBm+v2ss7q84/nLVXq0DeHtARH3f98xURkfKhM4pUaWfOFfL04q2s3p0OwOM9mzHx1jCcndRfSEREyo8CkVRZGw+e4cnPtpCalY+bixOv3aOHs4qISMVQIJIqx2ozmLVmH2/9uAebAc3qefPuwAhah/iaXZqIiNRQCkRSpZzMLmDc54ms33cKgL4RDfjH3W3xVn8hERGpQDrLSJURf/gsT8yPJy2rAE9XZ/5xT1v6R+p5ZCIiUvEUiKRK+GxjCi9+nUSR1aB5oA/vDYrg2qBaZpclIiIOQoFITJVfZOWVb3fy2cYUAG5vF8y0/uEaUi8iIpVKZx0xzZEzuYycH0/SsSwsFni6d0ueuPEaPYJDREQqnQKRVDrDMPh80xFe/24XWfnF1PZyZfqAjvRsUc/s0kRExEEpEEmlSs3MZ8IXW/l57/lRZB1C/Zk5KIIG/p4mVyYiIo5MgUgqzZrkdCYs3sapnALcXZx4undLhnZvgouzk9mliYiIg1MgkgpXbLXx75V7eG/tfgDCgmvx7gMRNA/0MbkyERGR8xSIpEKdyingyc+2sGH/aQCGRDVm0m1heLnpn56IiFQdOitJhdmScpYn5idwIjMfLzdnpvZrz13hIWaXJSIichEFIil3hmHw6a+HeXXZToqsBs3qeTP7wUhaaKJFERGpohSIpFzlFVp5bul2vtxyDIBb2wTzxr3tqeXhanJlIiIif06BSMrNoVPnGPFpPLtTs3F2sjDp1pY8en0zTbQoIiJVngKRlIuVO9MYvyiR7PxiAnzcePeBCLo2q2t2WSIiIqWiQCRXpdhq460f9zBzzfkh9ZGNazNrUARBvh4mVyYiIlJ6CkRSZicy8xjzWSIbD50B4OFuTXj29la4uWiiRRERqV4UiKRM1uxOZ/yiRM7mFuHj7sKUvu24U0PqRUSkmlIgkiuyNy2bT+IOM+/XwwC0beDLuwMjaBLgbXJlIiIiZadAJKWSX2Tl5W928PnmIxjG+WUPd2vC5NvDcHdxNrc4ERGRq6RAJH/pyJlcHp8Xz84TWQD8LSyQwV0bc1NYoMmViYiIlA8FIrmsH3em8dTirWTmFVHX240ZAzvSrXmA2WWJiIiUKwUiuaSM3EJe+HoH3249DkB4qD/vDYogxN/T5MpERETKnwKRXGTDvlOMX7SV1Kx8nJ0sDOvRlKd6t1BfIRERqbEUiMTuXEExb6xIZm7cIQwDmgZ489b9HegQ6m92aSIiIhVKgUgAWL/3FM98uY2jZ/MAGNi5ES/c0QovN/0TERGRmk9nOwd35Ewub6xI5pv/31eogb8nU/q2o2eLeiZXJiIiUnkUiBxUfpGV6av28n8/H6TQasNigYe6NmbirWF4u+ufhYiIOBad+RyM1WbwzdZjvLE8meOZ+QB0b16Xybe1om0DP5OrExERMYcCkYNIOZ3Lwk0pLNt2gpQzuQDU9/Pg5bva0Lt1EBaLxeQKRUREzKNAVMOdKyjmvbX7+eCnAxRabQD4erjw+A3XMKxHUzxcNZReREREgaiGyswt4vPNKby/7gCnzxUC0O2augzo3IherQI1ekxEROR3dFasYXanZvHf9Qf5MuEYxbbzT2FtUteLZ25rRXQb3RoTERG5FAWiGuB0TgE/7ExjSfxRNh8+a18eFlyLod2b0DeiIa7OTiZWKCIiUrU5VCCaOXMmb7zxBqmpqYSHhzNjxgw6d+5sdllXzDAMdp3IZt2ek6zencamQ/8LQU4WuK1tfR7p0ZTIxrVNrFJERKT6cJhA9PnnnzN+/Hhmz55Nly5dePvtt4mOjiY5OZnAwECzy/tTNpvBwdPnSEzJIPFIBjtPZHHgZA5nc4tKtGtV35d7OoRwd4cGBPt5mFStiIhI9WQxDMMwu4jK0KVLF6677jreffddAGw2G6GhoYwePZpnnnnmsp/NysrCz8+PzMxMfH19y60mq83g9LkCsvKKyMgtIjPv/OtEZj5HzuRy+HQuO45nkpVffNFnPV2dibqmLtdfG0B0m2A9hV5EROQPruT87RBXiAoLC4mPj2fy5Mn2ZU5OTvTq1Yu4uLiL2hcUFFBQUGB/n5WVVSF1Hc/I4/ppa/6ynbuLE+0a+NEh1J92Df1oFuDDtUE+GjIvIiJSThwiEJ06dQqr1UpQUFCJ5UFBQezevfui9lOmTOGVV16p8Lr8vFyxWMDXwxU/z/Mvfy9X6vm406iuF43qeNE0wJs2IX64uahTtIiISEVxiEB0pSZPnsz48ePt77OysggNDS3376nl7sL+f96Ok5OGwouIiJjJIQJRQEAAzs7OpKWllVielpZGcHDwRe3d3d1xd3ev8LosFguaFkhERMR8DnEfxs3NjcjISFatWmVfZrPZWLVqFVFRUSZWJiIiIlWBQ1whAhg/fjxDhgyhU6dOdO7cmbfffptz584xdOhQs0sTERERkzlMILr//vs5efIkL774IqmpqXTo0IHly5df1NFaREREHI/DzEN0NSpqHiIRERGpOFdy/naIPkQiIiIil6NAJCIiIg5PgUhEREQcngKRiIiIODwFIhEREXF4CkQiIiLi8BSIRERExOEpEImIiIjDUyASERERh+cwj+64Ghcm887KyjK5EhERESmtC+ft0jyUQ4GoFLKzswEIDQ01uRIRERG5UtnZ2fj5+V22jZ5lVgo2m43jx49Tq1YtLBbLVW8vKyuL0NBQjhw5omejVSAd58qh41w5dJwrh45z5ais42wYBtnZ2YSEhODkdPleQrpCVApOTk40bNiw3Lfr6+ur/3CVQMe5cug4Vw4d58qh41w5KuM4/9WVoQvUqVpEREQcngKRiIiIODwFIhO4u7vz0ksv4e7ubnYpNZqOc+XQca4cOs6VQ8e5clTF46xO1SIiIuLwdIVIREREHJ4CkYiIiDg8BSIRERFxeApEIiIi4vAUiCrZzJkzadKkCR4eHnTp0oWNGzeaXVKVMWXKFK677jpq1apFYGAg99xzD8nJySXa5OfnExMTQ926dfHx8aFfv36kpaWVaJOSkkKfPn3w8vIiMDCQCRMmUFxcXKLN2rVriYiIwN3dnebNmzNnzpyL6nGU39XUqVOxWCyMHTvWvkzHuXwcO3aMBx98kLp16+Lp6Um7du3YvHmzfb1hGLz44ovUr18fT09PevXqxd69e0ts48yZMwwaNAhfX1/8/f0ZNmwYOTk5Jdps27aN66+/Hg8PD0JDQ5k2bdpFtSxevJiwsDA8PDxo164d3333XcXsdCWzWq288MILNG3aFE9PT6655hr+8Y9/lHh2lY7zlfvpp5+48847CQkJwWKx8NVXX5VYX5WOaWlqKRVDKs3ChQsNNzc347///a+xY8cO49FHHzX8/f2NtLQ0s0urEqKjo42PP/7YSEpKMhITE43bb7/daNSokZGTk2NvM2LECCM0NNRYtWqVsXnzZqNr165Gt27d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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "figure_6_3()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "rl",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.20"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
